UDP Server এবং Client প্রোগ্রামের মাধ্যমে আমরা দেখবো কীভাবে UDP ব্যবহার করে ক্লায়েন্ট এবং সার্ভারের মধ্যে ডেটা পাঠানো যায়। UDP একটি কানেকশনলেস প্রোটোকল হওয়ায় এটি দ্রুত ডেটা ট্রান্সমিশনের জন্য ব্যবহৃত হয়। নিচে UDP Server এবং Client-এর উদাহরণ C ভাষায় দেওয়া হলো।
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#define PORT 8080
int main() {
int sockfd;
char buffer[1024];
struct sockaddr_in server_addr, client_addr;
socklen_t addr_len = sizeof(client_addr);
char *message = "Hello from server";
// 1. Socket তৈরি করা
if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
perror("Socket creation failed");
exit(EXIT_FAILURE);
}
// 2. সার্ভার ঠিকানা সেটআপ করা
server_addr.sin_family = AF_INET;
server_addr.sin_addr.s_addr = INADDR_ANY;
server_addr.sin_port = htons(PORT);
// 3. Binding করা
if (bind(sockfd, (struct sockaddr*)&server_addr, sizeof(server_addr)) < 0) {
perror("Bind failed");
close(sockfd);
exit(EXIT_FAILURE);
}
printf("Server is listening on port %d\n", PORT);
// 4. ডেটা গ্রহণ করা
int n = recvfrom(sockfd, buffer, 1024, 0, (struct sockaddr*)&client_addr, &addr_len);
buffer[n] = '\0';
printf("Client: %s\n", buffer);
// 5. ডেটা পাঠানো
sendto(sockfd, message, strlen(message), 0, (struct sockaddr*)&client_addr, addr_len);
printf("Hello message sent to client\n");
// 6. Socket বন্ধ করা
close(sockfd);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#define PORT 8080
int main() {
int sockfd;
char buffer[1024];
struct sockaddr_in serv_addr;
socklen_t addr_len = sizeof(serv_addr);
char *message = "Hello from client";
// 1. Socket তৈরি করা
if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
perror("Socket creation failed");
exit(EXIT_FAILURE);
}
// 2. সার্ভার ঠিকানা সেটআপ করা
serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons(PORT);
serv_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
// 3. ডেটা পাঠানো
sendto(sockfd, message, strlen(message), 0, (struct sockaddr*)&serv_addr, addr_len);
printf("Message sent to server\n");
// 4. ডেটা গ্রহণ করা
int n = recvfrom(sockfd, buffer, 1024, 0, (struct sockaddr*)&serv_addr, &addr_len);
buffer[n] = '\0';
printf("Server: %s\n", buffer);
// 5. Socket বন্ধ করা
close(sockfd);
return 0;
}
socket()
ফাংশন ব্যবহার করে সার্ভারের জন্য একটি UDP Socket তৈরি করা হয়।bind()
ফাংশন ব্যবহার করে Socket-কে নির্দিষ্ট IP Address এবং পোর্টে সংযুক্ত করা হয় (INADDR_ANY
এবং 8080
)।recvfrom()
ফাংশন ইনকামিং ডেটা গ্রহণ করে এবং তা buffer
এ সংরক্ষণ করে। এটি ক্লায়েন্টের ঠিকানা এবং পোর্ট নম্বরও ধারণ করে।sendto()
ফাংশন ব্যবহার করে ক্লায়েন্টের কাছে একটি বার্তা পাঠানো হয়।close()
ফাংশন Socket বন্ধ করতে ব্যবহার করা হয়।socket()
ফাংশন ব্যবহার করে ক্লায়েন্টের জন্য একটি UDP Socket তৈরি করা হয়।inet_addr()
ফাংশন ব্যবহার করে সার্ভারের IP Address এবং htons()
ফাংশন ব্যবহার করে পোর্ট নম্বর সেট করা হয়।sendto()
ফাংশন ব্যবহার করে সার্ভারে বার্তা পাঠানো হয়।recvfrom()
ফাংশন ব্যবহার করে সার্ভার থেকে ডেটা প্যাকেট গ্রহণ করা হয় এবং তা buffer
এ সংরক্ষণ করা হয়।close()
ফাংশন Socket বন্ধ করতে ব্যবহার করা হয়।প্রথমে সার্ভার প্রোগ্রাম চালু করুন:
8080
) ইনকামিং সংযোগের জন্য অপেক্ষা করবে।এরপর ক্লায়েন্ট প্রোগ্রাম চালু করুন:
ক্লায়েন্ট এবং সার্ভারের মধ্যে বার্তা আদান-প্রদান:
common.read_more